#include <iostream>
#include <vector>
#include <cassert>

using namespace std;
// 485. 最大连续1的个数
// 给定一个二进制数组 nums ， 计算其中最大连续 1 的个数。
// 输入：nums = [1,1,0,1,1,1]
// 输出：3
// 解释：开头的两位和最后的三位都是连续 1 ，所以最大连续 1 的个数是 3.

class Solution {
public:
    int findMaxConsecutiveOnes(vector<int>& nums) {
        int i = 0;
        int maxCount = 0;    // 最大连续1的个数
        
        while(i < nums.size()) {
            if(nums[i] == 0)
                i++;
            else
            {
                assert(nums[i] == 1);
                int tmpCount = 1;   // 当前连续1的个数
                i++;    // i向后走一步探测。这一步是关键。
                while(i < nums.size() && nums[i] == 1)    // 问题出在这里（i++ < nums.size() && nums[i] == 1），前面i++后，后面的nums[i]就不是以前的i了
                {
                    tmpCount++;
                    i++;
                }
                maxCount = max(maxCount,tmpCount);
            }
        }
        return maxCount;
    }
};
int main() {
//    vector<int> nums1 = {1, 1, 0, 1, 1, 1};
//    cout << Solution().findMaxConsecutiveOnes(nums1) << endl;    // 3
//
//    vector<int> nums2 = {1,0,1,1,0,1};
//    cout << Solution().findMaxConsecutiveOnes(nums2) << endl;   // 2

    vector<int> nums3 = {1,1,0,1};
    cout << Solution().findMaxConsecutiveOnes(nums3) << endl;   // 2
    return 0;
}
